home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / worm.h < prev    next >
C/C++ Source or Header  |  1988-06-21  |  2KB  |  65 lines

  1. /*
  2.  * worm.h --
  3.  *
  4.  *    Definitions and macros for Write-Once Read Many (worm) disk
  5.  *     manipulation.
  6.  *
  7.  * Copyright (C) 1987 Regents of the University of California
  8.  * All rights reserved.
  9.  *
  10.  *
  11.  * $Header: worm.h,v 1.1 88/06/21 12:07:49 ouster Exp $ SPRITE (Berkeley)
  12.  */
  13.  
  14. #ifndef _DEV_WORM
  15. #define _DEV_WORM
  16.  
  17. /*   
  18.  * worm specific commands:
  19.  *
  20.  *   IOC_WORM_COMMAND        Issue a worm specific command
  21.  *   IOC_WORM_STATUS        Return status info from a worm
  22.  */
  23. #define IOC_WORM            (3 << 16)
  24. #define IOC_WORM_COMMAND        (IOC_WORM | 0x1)
  25. #define IOC_WORM_STATUS            (IOC_WORM | 0x2)
  26.  
  27. /*
  28.  * Mag worm control, IOC_WORM_COMMAND
  29.  * The one IN parameter specifies a specific
  30.  * worm command and a repetition count.
  31.  */
  32. typedef struct Dev_WormCommand {
  33.     int command;
  34.     int count;
  35. } Dev_WormCommand;
  36.  
  37. #define IOC_WORM_NO_OP            1
  38.  
  39. /*
  40.  * Mag worm status, IOC_WORM_STATUS
  41.  * This returns status info from drives.
  42.  */
  43. typedef struct Dev_WormStatus {
  44.     int        statusReg;    /* Copy of device status register */
  45.     int        residual;    /* Residual after last command */
  46.     char    senseKey;    /* Sense key from last GetSense */
  47.     char    code2;        /* Additional sense code from last GetSense */
  48.     char    pad[2];
  49.     int        location;    /* logical block addr corresponding to error */
  50. } Dev_WormStatus;
  51.  
  52. /*
  53.  * Stubs to interface to Fs_IOControl
  54.  */
  55. extern ReturnStatus Ioc_WormStatus();
  56. extern ReturnStatus Ioc_WormCommand();
  57.  
  58. /*
  59.  * Types for worm controllers.  Not used now, since there's only a single
  60.  * type.
  61.  */
  62. #define DEV_WORM_RXT        0x1
  63.  
  64. #endif _DEV_WORM
  65.